package utils

import (
	"github.com/gin-gonic/gin"
	"time"
)

// Response 定义统一的响应结构。
// swagger:model Response
type Response struct {
	// 成功标识：操作是否成功。
	// required: true
	// example: true
	Success bool `json:"success" swagger:"desc(成功标识：操作是否成功。),required"`
	// 消息内容：描述操作结果或错误信息。
	// required: true
	// example: 操作成功
	Message string `json:"message" swagger:"desc(消息内容：描述操作结果或错误信息。),required"`
	// 状态码：表示操作的状态代码。
	// required: true
	// example: 200
	Code int `json:"code" swagger:"desc(状态码：表示操作的状态代码。),required"`
	// 结果数据：操作返回的数据结果，根据不同的接口可能包含不同类型的数据。
	// required: false
	Result interface{} `json:"result" swagger:"desc(结果数据：操作返回的数据结果，根据不同的接口可能包含不同类型的数据。)"`
	// 时间戳：响应生成的时间，单位为秒。
	// required: true
	// example: 1643251684
	Timestamp int64 `json:"timestamp" swagger:"desc(时间戳：响应生成的时间，单位为秒。),required"`
}

// Result 封装返回方法
func Result(c *gin.Context, success bool, message string, code int, result interface{}) {
	c.JSON(code, Response{
		Success: success,
		Message: message,
		Code:    code,
		Result:  result,
		// 当前时间戳（毫秒）
		Timestamp: time.Now().UnixMilli(),
	})
}
